 //配置全局路径前缀
axios.defaults.baseURL = 'http://www.itcbc.com:8000'

// 为所有的请求路径 添加请求头(token认证)
// 但是这种写法,把不需要进行身份认证 的注册页 和登录页也包含在内  ,所以使用 请求拦截器+if判断 解决这个问题
// axios.defaults.header.common['Authorization']=localStorage.getItem('myToken')

// 所以使用 请求拦截器+if判断 解决这个问题↓
axios.interceptors.request.use(function (config) {
    //config是所有请求配置参数 - 判断路径是否包含 /api/
    // console.log(config)
    if (config.url.indexOf('/api/') == -1) {
        config.headers.Authorization = localStorage.getItem('myToken')
    }
    //返回请求参数
    return config
}, function (error) {
    //固定语法,抛出错误
    return Promise.reject(error)
})

//响应拦截器,进行报错处理
axios.interceptors.response.use(function (response) {
    //判断响应逻辑代码值
    if (response.data.code == 1) {
        toastr.warning(response.data.message)
    }
    return response;
}, function (error) {
    //1.未登录 就进入了index页面 
    //2.token令牌 超过了有效期,两种情况 都会导致身份认证失败
    // 总结: 身份认证失败后,要求跳转到登陆页面(登录拦截)
    console.dir(error)
    //此处为了用户体验,可以一层层的往error顶层进行 &&判断
    if (error.response.data.message == '身份认证失败') { 

        //如果是index本页面的身份认证失败 就直接跳转到登录页
        if (location.href.indexOf('index.html') != -1) {
            location.href = './login.html'
        }
        // ***********************************************************
        // 但是如果是iframe标签里的页面 比如(dashboard.html  score.html student.html) 这些页面出现了身份认证失败的问题 就应该让它们的父页面进行跳转 
        //  否则就会出现index页面内,dashboard区域跳转到了登录页面
        /*  如果单独打开dashboard.html 且出现了身份认证失败问题,则执行else语句 ,此时window.parent 依然是window */
        // ***********************************************************
        else {
            window.parent.location.href = './login.html'
        }
        localStorage.removeItem('myToken')
    }
    //如果是其他的响应错误,就直接弹出错误信息
    else {
        toastr.error(error.response.data.message)
    }
    return Promise.reject(error)
})